好的鏡頭交還給棚內主播
今天要來談談怎麼進行app-level的log收集
基本上app level的就是將logstash, filebeat等套件直接安裝到app裡面, 所以可以直接把log從app送到Elastic Search。
比如在JAVA Spring Boot中我們會寫一個logback-spring.xml去規定log format以及目標server, 並且在application.properties or application.yml指定目標server。
我自己在專案上的做法是在每個app設定format,然後在Pod裡面加filebeat去讀取log file,再送到elastic search, 比較好集中管理log。
接下來我們直接在cluster上起一個ELK吧!
首先建立一份List, 這份List包含了elastic search以及UI component - kibana
唯一要注意的地方有三處:
(這邊要不要改端看你host下ifconfig找到的網卡有沒有site這張,我是沒有,所以照預設的設定會失敗, ref: 這裏)
然後創建一個獨立的namespace:
接著大膽的apply:
下指令看看是否有pod部署失敗:
如果有失敗的話可以利用kubectl logs細查失敗的原因為何:
可以看到因為上面的network沒改,找不到_site_:
正常啟動的話會看到log一直進來:
接著要看到的是service的部分, 我們在這裡用NodePort的方式將elastic search的API以及kibana的UI介面暴露出來。
請注意: 不要在線上環境使用NodePort的方式去暴露你的服務,否則security可能會很火
透過查看services去查看是哪個port可以找到kibana UI
如果你像我一樣用AWS的Instances, 請記得上去設定security group的inbound rules, 不然還是看不到
看到這個就成功啦!
下一篇來談談除了log之外, 開發時可能會需要的實用工具。
如何建立ELK:
network issue:
https://github.com/pires/kubernetes-elasticsearch-cluster/issues/64